package dao;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import pojo.*;

import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName 刘星宇
 * @Description TODO
 * @date 2022/12/2 14:18
 * @Version 1.0
 */
public interface SoMainMapper extends BaseMapper<Somain>{
    Somain getSoMainBySoID(String soId);
    List<Soitem> getSoItemsBySoID(String soId);
    List<Soitem> cxSoMainBySoID(Somain somain);
    Somain checkSoMainBySoID(String soId);
    Somain updateSoMainBySoID(BigDecimal soId);
    int AddSoMain(Somain s);
    int AddSoItem(Soitem soitem);
    int DelSoMain(Somain somain);
    int DelSoItem(Soitem soitem);
    int updateSoMain(Somain somain);
    int updateSoItem(Soitem soitem);
    List<Somain>getSoMainPage(@Param("page") Page<Somain> page, @Param("somain") Somain somain, @Param("type") int payType);
    int getCountSoMain(@Param("somain") Somain somain,@Param("type") int payType);
    int endUpdate1(Somain somain);
    //采购单查询
    List<Somain> SoMainAllByPage(@Param("page1") Page<Somain> page, @Param("somain1") Somain somain);
    int SoMainCount(@Param("page1") Page<Somain> page, @Param("somain1") Somain somain);
    //出库登记分页
    List<Somain> onboundAllByPage(@Param("page2")Page<Somain> page,@Param("somain2") Somain somain,@Param("type2") int payType);
    //出库分页总条数
    int onboundCountSoMain(@Param("somain2") Somain somain,@Param("type2") int payType);
    int updateOnbound(Somain somain);
    int updNum1(@Param("product") Product product,@Param("num")int num);
    int addStock1(Stockrecord stockrecord);
    List<Soitem> getNum1(BigDecimal soId);
    //收款登记分页
    List<Somain> inMoneyAllByPage(@Param("page3")Page<Somain> page,@Param("somain3") Somain somain,@Param("type3") int payType);
    //收款分页总条数
    int inMoneyCountSoMain(@Param("somain3") Somain somain,@Param("type3") int payType);
    //收款修改状态
    int updateinMoney(Somain somain);
    int updateinMoney1(Somain somain);
    //收付款登记新增
    int addinMoney(Payrecord payrecord);
    List<Somain> soReportPage(@Param("page4") Page<Somain> page, @Param("somain4") Somain somain);
    int soReportCount(@Param("page4") Page<Somain> page, @Param("somain4") Somain somain);
    @Select("select count(*) from somain")
    int getSoCount();
    @Select("select count(*) from somain where status = 4")
    int getSoEndCountInt();
    @Select("select sum(soTotal) from somain")
    float getSoTotalPrice();
    @Select("select sum(payPrice) from payrecord where payType=2 or payType= 4")
    float getPayPriceFloat1();

    List<Somain> soReportPage1(Somain somain);
    int soReportCount1(Somain somain);
}
